'\" t
.\" Copyright 2003 Walter Harms, 2004 Andries Brouwer <aeb@cwi.nl>.
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Created 2004-10-31. Text taken from a page by Walter Harms, 2003-09-08
.\"
.TH drand48_r 3 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r,
srand48_r, seed48_r, lcong48_r
\- generate uniformly distributed pseudo-random numbers reentrantly
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <stdlib.h>
.P
.BI "int drand48_r(struct drand48_data *restrict " buffer ,
.BI "              double *restrict " result );
.BI "int erand48_r(unsigned short " xsubi [3] ","
.BI "              struct drand48_data *restrict "buffer ,
.BI "              double *restrict " result ");"
.P
.BI "int lrand48_r(struct drand48_data *restrict " buffer ,
.BI "              long *restrict " result );
.BI "int nrand48_r(unsigned short " xsubi[3] ","
.BI "              struct drand48_data *restrict "buffer ,
.BI "              long *restrict " result ");"
.P
.BI "int mrand48_r(struct drand48_data *restrict " buffer ,
.BI "              long *restrict " result ");"
.BI "int jrand48_r(unsigned short " xsubi[3] ","
.BI "              struct drand48_data *restrict " buffer ,
.BI "              long *restrict " result ");"
.P
.BI "int srand48_r(long int " seedval ", struct drand48_data *" buffer ");"
.BI "int seed48_r(unsigned short " seed16v[3] ", struct drand48_data *" buffer );
.BI "int lcong48_r(unsigned short " param[7] ", struct drand48_data *" buffer );
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
All functions shown above:
.\" .BR drand48_r (),
.\" .BR erand48_r (),
.\" .BR lrand48_r (),
.\" .BR nrand48_r (),
.\" .BR mrand48_r (),
.\" .BR jrand48_r (),
.\" .BR srand48_r (),
.\" .BR seed48_r (),
.\" .BR lcong48_r ():
.nf
    /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
These functions are the reentrant analogs of the functions described in
.BR drand48 (3).
Instead of modifying the global random generator state, they use
the supplied data
.IR buffer .
.P
Before the first use, this struct must be initialized, for example,
by filling it with zeros, or by calling one of the functions
.BR srand48_r (),
.BR seed48_r (),
or
.BR lcong48_r ().
.SH RETURN VALUE
The return value is 0.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR drand48_r (),
.BR erand48_r (),
.BR lrand48_r (),
.BR nrand48_r (),
.BR mrand48_r (),
.BR jrand48_r (),
.BR srand48_r (),
.BR seed48_r (),
.BR lcong48_r ()
T}	Thread safety	MT-Safe race:buffer
.TE
.SH STANDARDS
GNU.
.SH SEE ALSO
.BR drand48 (3),
.BR rand (3),
.BR random (3)
